import type { Dayjs } from 'dayjs';

import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace PerBusinessEduExperienceApi {
  /** 教育经历信息业务信息 */
  export interface BusinessEduExperience {
    id: number; // 主键ID
    busiId?: string; // 业务主表id
    employeeId?: number; // 人员ID，对应 per_employee.id
    eduExperienceId: number; // 教育经历ID
    isFullTime: number; // 是否全日制（1：是，0：否）
    schoolName: string; // 学校名称
    collegeName: string; // 院系名称
    major: string; // 所学专业
    startDate: string; // 开始时间
    endDate: string; // 结束时间
    graduationStatus: string; // 毕结业状态（毕业/结业/肄业等）
    educationLevel: string; // 学历
    degree: string; // 学位
    isHighest: number; // 是否最高学历（1：是，0：否）
    learningForm: string; // 学习形式（全日制/非全日制/函授/夜大等）
    admissionMethod: string; // 入学方式（统招/自考/成人高考等）
    certificateNo: string; // 学历证书编号
    degreeCertificateNo: string; // 学位证书编号
    isValid: number; // 是否有效（1：有效，0：无效）
    attachment: string; // 附件（证明材料URL或文件路径）
    remarks: string; // 备注
    changeType: string; // 变更类型（add：新增，update：修改，delete：删除）
    changeContent: string; // 变更内容(JSON格式，记录变更前后对比，只有修改的时候记录)
    auditStatus: number; // 审核状态（0 草稿 1 审核中 2 审核完成）
    finalAuditStatus: number; // 最终审核状态：0 待审核 1 审核通过 2 审核不通过
    auditTime: string | Dayjs; // 审核完成时间
    auditor: string; // 审核人
    auditComment: string; // 审核意见
    metadata: string; // 其他参数
  }
}

/** 查询教育经历信息业务分页 */
export function getBusinessEduExperiencePage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    PageResult<PerBusinessEduExperienceApi.BusinessEduExperience>
  >('/per/business-edu-experience/page', data, {
    desensitize,
    encrypt,
  });
}

/** 查询教育经历信息业务详情 */
export function getBusinessEduExperience(id: number) {
  return requestClient.get<PerBusinessEduExperienceApi.BusinessEduExperience>(
    `/per/business-edu-experience/get?id=${id}`,
  );
}

/** 新增教育经历信息业务 */
export function createBusinessEduExperience(
  data: PerBusinessEduExperienceApi.BusinessEduExperience,
) {
  return requestClient.post('/per/business-edu-experience/create', data);
}

/** 修改教育经历信息业务 */
export function updateBusinessEduExperience(
  data: PerBusinessEduExperienceApi.BusinessEduExperience,
) {
  return requestClient.put('/per/business-edu-experience/update', data);
}

/** 删除教育经历信息业务 */
export function deleteBusinessEduExperience(id: number) {
  return requestClient.delete(`/per/business-edu-experience/delete?id=${id}`);
}

/** 批量删除教育经历信息业务 */
export function deleteBusinessEduExperienceList(ids: number[]) {
  return requestClient.delete(
    `/per/business-edu-experience/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出教育经历信息业务 */
export function exportBusinessEduExperience(params: any) {
  return requestClient.download('/per/business-edu-experience/export-excel', {
    params,
  });
}

/** 根据业务主表id去查询业务数据 */
export function getEduExperienceBusiId(data: any) {
  return requestClient.post<PerBusinessEduExperienceApi.BusinessEduExperience>(
    `/per/business-edu-experience/getEduExperienceBusiId`,
    data,
  );
}

/** 获取当前登录人教育经历信息 */
export function getCurrentEduExperiences(
  data,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<
    List<PerBusinessEduExperienceApi.BusinessEduExperience>
  >('/per/business-edu-experience/getCurrentEduExperiences', data, {
    desensitize,
    encrypt,
  });
}
